PythonのLangChainでAzure OpenAI Serviceにデプロイしたモデルを利用するサンプルをやってみた

PythonのLangChainでAzure OpenAI Serviceにデプロイしたモデルを利用するサンプルをやってみた

PythonのLangChainライブラリで、Azure OpenAI Serviceにデプロイしてあるモデルを利用するサンプルがあったので、クライアント実行環境の構築からやってみました。
Clock Icon2023.06.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部 インテグレーション部 機械学習チームの鈴木です。

PythonのLangChainのドキュメントで、Azure OpenAI Serviceにデプロイしたモデルを利用するサンプルがあり、自分でも試してみたのでご共有です。

試したサンプル

以下のLangChainライブラリの、Azure OpenAI向けのサンプルをやってみました。

ご紹介する内容としては、環境変数を使った設定方法を、一部修正しました。Azure OpenAI Serviceの利用のための実装は同じです。

クライアント実行環境

実行環境はGoogle Colaboratoryを使いました。ハードウェアアクセラレータ無し、ラインタイム仕様は標準としました。

Pythonのバージョンは以下でした。

!python --version
# Python 3.10.12

また、ライブラリは以下のようにインストールしました。

!pip install python-dotenv
!pip install langchain
!pip install openai

インストールされたライブラリのバージョンは以下でした。

!pip freeze | grep -e "openai" -e "langchain"
# langchain==0.0.209
# langchainplus-sdk==0.0.16
# openai==0.27.8

環境変数の設定

まず、必要な値を.envファイルに書き込みます。

# openaiパッケージの設定
!echo 'OPENAI_API_TYPE="azure"' >>.env
!echo 'OPENAI_API_BASE="<エンドポイント>"' >>.env
!echo 'OPENAI_API_VERSION="2023-05-15"' >>.env
!echo 'OPENAI_API_KEY="<トークン>"' >>.env

# 環境変数としてコードで別途利用するもの
!echo 'DEPLOYMENT_NAME="<デプロイ名>"' >>.env
!echo 'MODEL_NAME="<モデル名>"' >>.env

上の4つはドキュメント記載の、openaiパッケージの設定になります。下の2つは、実装中でlangchain.llms.AzureOpenAIに渡す値を環境変数に切り出したものになります。

今回、OPENAI_API_VERSION2023-05-15としました。APIのバージョンについては、以下のドキュメントを参考にしました。

MODEL_NAMEはサンプルではtext-davinci-002でしたが、執筆時点で以下のドキュメントで紹介されていたtext-davinci-003を利用しました。

load_dotenv()で環境変数を読み込みました。

from dotenv import load_dotenv
load_dotenv()

実行してみる

デプロイ名とモデル名を指定して、実行してみました。サンプル通り、Tell me a jokeと聞いてみます。

# 2023/06/22に以下のドキュメントを参考にしました。
# https://python.langchain.com/docs/modules/model_io/models/llms/integrations/azure_openai_example

# Import Azure OpenAI
from langchain.llms import AzureOpenAI

# Create an instance of Azure OpenAI
# Replace the deployment name with your own
llm = AzureOpenAI(
    deployment_name=os.getenv("DEPLOYMENT_NAME"),
    model_name=os.getenv("MODEL_NAME")
)

# Run the LLM
llm("Tell me a joke")

以下のように、ジョークを教えてもらえました!

Q: What did the fish say when it hit the wall?
A: Dam!

最後に

今回はPythonのLangChainで、Azure OpenAI Serviceを利用してみました。

Azure OpenAI Service側の環境準備については以下のブログも参考にしてください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.